<template>
  <view class="login-container">
    <!-- 提示登录的图标 -->
    <uni-icons type="contact-filled" size="100" color="#AFAFAF"></uni-icons>
    <!-- 登录按钮 -->
    <button type="primary" class="btn-login"  @click="login">一键登录</button>
    <!-- 登录提示 -->
    <view class="tips-text">登录后尽享更多权益</view>
  </view>
</template>
  <script>
import { mapMutations } from 'vuex';
import {getUserToken} from '@/api/my';

export default {
  methods: {
    ...mapMutations(['setToken','setUserInfo']),
    // 登录获取用户的基本信息
    async login() {
      const res = await uni.getUserProfile({
      desc: "声明获取用户个人信息后的用途",
    });
    console.log(res);
      this.setUserInfo(res.userInfo)
      this.getToken(res)
    },
    // 使用个人信息发请求获取token
    async getToken(info){
      const res = await uni.login()
      console.log(res);
      if(res.errMsg !== 'login:ok') return uni.showToast({title: '登录失败'})

      const query = {
        code:res.code,
        encryptedData:info.encryptedData,
        iv:info.iv,
        rawData:info.rawData,
        signature:info.signature,
      }
     const result = await getUserToken(query)
     this.setToken(result.message.token)
     if(result.meta.status !== 200) return uni.showToast({title:'登录失败！',icon:'error'})
     uni.showToast({
      title: '登录成功',
      icon: 'success',
      mask: true
     })
    }
  },
};
</script>
  <style lang="scss" scoped>
.login-container {
  // 登录盒子的样式
  height: 750rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background-color: #f8f8f8;
  position: relative;
  overflow: hidden;

  // 绘制登录盒子底部的半椭圆造型
  &::after {
    content: " ";
    display: block;
    position: absolute;
    width: 100%;
    height: 40px;
    left: 0;
    bottom: 0;
    background-color: white;
    border-radius: 100%;
    transform: translateY(50%);
  }

  // 登录按钮的样式
  .btn-login {
    width: 90%;
    border-radius: 100px;
    margin: 15px 0;
    background-color: #c00000;
  }

  // 按钮下方提示消息的样式
  .tips-text {
    font-size: 12px;
    color: gray;
  }
}
</style>